package br.ucb.sigplan.action.impl;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.ucb.sigplan.action.Action;
import br.ucb.sigplan.beans.Professor;
import br.ucb.sigplan.dao.impl.ProfessorDAOImpl;
import br.ucb.sigplan.util.BodyEmail;
import br.ucb.sigplan.util.EmailUtil;
import br.ucb.sigplan.util.RecuperaSenhaUtil;
import br.ucb.sigplan.util.SenhaUtil;
import br.ucb.sigplan.exception.DAOException;

public class ConfirmarRestauracaoSenhaAction implements Action {

	private final String SENHA_DEFAULT = "12345";

	@Override
	public String execute(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {

		String matricula = req.getParameter("id");
		String email = req.getParameter("email");

		List<String> erros = new ArrayList<String>();

		verificaDados(matricula, email, erros);

		if (!erros.isEmpty()) {
			// mensagem de erro
			for (String string : erros) {
				System.out.println(string);
			}
		} else {
			// mensagem de sucesso e envio de email
			ProfessorDAOImpl dao = new ProfessorDAOImpl();
			String senha = SenhaUtil.geraSenha();
			String msg = null;
			try {
				dao.updateSenha(senha, email, matricula);				
			} catch (DAOException e) {
				e.printStackTrace();
				msg = e.getMessage();
			}
			
			if (msg == null) {
				msg = "senhaEnviada";
			}
			
			req.setAttribute("msg", msg);

			Professor professor = dao.findByEmail(email);
			EmailUtil.sendMail(BodyEmail.getBodySenhaRedefinida(professor.getSenha()),
					"Senha Redefinida", professor.getEmail());

		}

		return "/login.jsp";
	}

	private void verificaDados(String matricula, String email,
			List<String> erros) {
		if (matricula == null || matricula.isEmpty())
			erros.add("matriculaIncorreto");
		if (email == null || email.isEmpty())
			erros.add("emailIncorreto");

	}

}
